package com.sugon.dao;

import com.sugon.entity.MaterialBaseEntity;
import com.sugon.entity.SysOaProcessEntity;
import com.sugon.entity.dto.PickListDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 领料单Dao
 *
 * @author sugon
 * @date 2020-01-08 08:53:20
 */
public interface MaterialBaseDao extends BaseDao<MaterialBaseEntity> {

    MaterialBaseEntity queryObjectDetail(String id);

    /**
     * 根据物料单号查询物料单信息和物料项信息
     *
     * @param materialCode 物料单号
     * @return
     */
    PickListDTO queryByNo(@Param("materialCode") String materialCode);

    /**
     * 根据审核流程ID查询物料单信息和物料项信息
     *
     * @param procInstId 审核流程ID
     * @return
     */
    PickListDTO queryPickListByProcInstId(@Param("procInstId") String procInstId);

    /**
     * 根据审核流程ID查询物料单审核记录
     *
     * @param procInstId 审核流程ID
     * @return
     */
    List<SysOaProcessEntity> queryAuditRecordByProcInstId(@Param("procInstId") String procInstId);

    /**
     * 获取指定编码前缀的入库编码
     */
    String getLastestPartCode(@Param("codePrefix") String codePrefix);

    /**
     * 更新流程实例信息
     *
     * @param pickListId 领料单ID
     * @param procInstId 流程实例ID
     * @return
     */
    int updateProcInstId(@Param("pickListId") String pickListId, @Param("procInstId") String procInstId);

    /**
     * 统计匹配的领料单数
     *
     * @param deptId        车间ID
     * @param startPickDate 统计时间：开始
     * @param endPickDate   统计时间：结束
     * @return
     */
    int countMatched(@Param("deptId") String deptId, @Param("startPickDate") String startPickDate, @Param("endPickDate") String endPickDate);
}
